package com.bsb.base.common.util.wx;

import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;

import com.bsb.base.common.util.StringUtils;

public class mapUtil
{
    /**
     * javaBean 转 Map
     * @param object 需要转换的javabean
     * @return  转换结果map
     * @throws Exception
     */
    public static Map<String, Object> beanToMap(Object object) throws Exception
    {
        Map<String, Object> map = new HashMap<String, Object>();
 
        Class cls = object.getClass();
        Field[] fields = cls.getDeclaredFields();
        for (Field field : fields) {
            field.setAccessible(true);
            map.put(field.getName(), field.get(object));
        }
        return map;
    }
 
    /**
     *
     * @param map   需要转换的map
     * @param cls   目标javaBean的类对象
     * @return  目标类object
     * @throws Exception
     */
    public static Object mapToBean(Map<String, Object> map, Class cls) throws Exception
    {
        Object object = cls.newInstance();
        for (String key : map.keySet()){
            Field temFiels = cls.getDeclaredField(key);
            temFiels.setAccessible(true);
            temFiels.set(object, map.get(key));
        }
        return object;
    }
    
    public static void main(String[] args) {
		String s = "{callback=qrCodeService}";
		strToMap(s);
	}
    /**
     * 
     * @param s {callback=qrCodeService,aaa=bbb}
     */
	public static Map<String,String> strToMap(String s) {
		String substringBetween = StringUtils.substringBetween(s, "{", "}");
		String[] keyValuePairs = substringBetween.split(",");
		Map<String,String> map = new HashMap<>();               

		for(String pair : keyValuePairs)                        //iterate over the pairs
		{
		    String[] entry = pair.split("=");                   //split the pairs to get key and value 
		    map.put(entry[0].trim(), entry[1].trim());          //add them to the hashmap and trim whitespaces
		}
		return map;
	}
}